package com.example.api.client;

//import com.example.businessmanage.config.FeignConfig;
//import com.example.petinfo.domain.dto.PetInfoRespDTO;
import com.example.api.dto.PetInfoRespDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

/**
 * OpenFeign客户端：调用pet-info-service（宠物信息服务）
 */
@FeignClient(name = "pet-info-service")
public interface PetInfoFeignClient {

    /**
     * 根据宠物ID查询宠物详情（含外借状态）
     */
    @GetMapping("/api/v1/pets/{petId}")
    PetInfoRespDTO getPetInfoById(@RequestParam("petId") Long petId);

    /**
     * 更新宠物外借状态
     * @param petId 宠物ID
     * @param newLendStatus 新外借状态
     * @param responsibleUserId 负责人ID（可选）
     * @return 更新结果（true-成功，false-失败）
     */
    @PostMapping("/api/v1/pets/update-lend-status")
    Boolean updateLendStatus(
            @RequestParam("petId") Long petId,
            @RequestParam("newLendStatus") Integer newLendStatus,
            @RequestParam(value = "responsibleUserId", required = false) Long responsibleUserId);

    /**
     * 更新宠物的待选择代养人集合（逗号分隔的代养人ID）
     * @param petId 宠物ID
     * @param fosterIds 代养人ID集合（如"1001,1002"）
     * @return 更新结果
     */
    @PostMapping("/api/v1/pets/update-foster-ids")
    Boolean updateToBeSelectedFosterIds(
            @RequestParam("petId") Long petId,
            @RequestParam("fosterIds") String fosterIds);

    /**
     * 统计当前各品种的"运输中/代养中"宠物数量
     * @param status1 状态1：3-运输中
     * @param status2 状态2：4-在代养人手里
     * @return 统计结果Map（key：品种名，value：数量）
     */
    @GetMapping("/api/v1/pets/breed-count")
    Map<String, Integer> countBreedByLendStatus(
            @RequestParam("status1") Integer status1,
            @RequestParam("status2") Integer status2);
}
